package com.regexdemo;

/**
 * @Auther: shiquan
 * @Date: 2024/10/24 - 10 - 24 -22:01
 */
public class RegexDemo2 {
    public static void main(String[] args) {

        // 只能是 a  b  c 从左到右一个一个匹配
        System.out.println("-------1--------");
        System.out.println("a".matches("[abc]")); //true
        System.out.println("z".matches("[abc]")); //false
        System.out.println("ab".matches("[abc]")); //false
        System.out.println("ab".matches("[abc][abc]")); //true

        //不能出现a b c
        System.out.println("-------2------");
        System.out.println("a".matches("[^abc]"));//false
        System.out.println("z".matches("[^abc]"));//true
        System.out.println("zz".matches("[^abc]"));//false //一个大括号表示一个字符 两个字符错
        System.out.println("zz".matches("[^abc][^abc]"));//true

        //a到z A到Z  包括头尾的范围
        System.out.println("-------3------");
        System.out.println("a".matches("[a-zA-Z]")); //true   -表示范围
        System.out.println("z".matches("[a-zA-Z]")); //true
        System.out.println("aa".matches("[a-zA-Z]")); //false
        System.out.println("zz".matches("[a-zA-Z]")); //false
        System.out.println("zz".matches("[a-zA-Z][a-zA-Z]")); //true
        System.out.println("0".matches("[a-zA-Z]")); //false
        System.out.println("0".matches("[a-zA-Z0-9]")); //true

        //[a-d][m-p] a到d  m到p
        System.out.println("-------4------");
        System.out.println("a".matches("[a-d][m-p]"));//t
        System.out.println("d".matches("[a-d][m-p]"));//t
        System.out.println("m".matches("[a-d][m-p]"));//t
        System.out.println("p".matches("[a-d][m-p]"));//t
        System.out.println("e".matches("[a-d][m-p]"));//f
        System.out.println("0".matches("[a-d][m-p]"));//f

        //[a-z&&][def]  a-z和def的交集  为 d,e,f
        //细节  如果两个范围的交集 那么需要写符号&&
        //如果写成了一个&, 此时&表示就不是交集了,就是一个简单的&符合
        System.out.println("----5-----");
        System.out.println("a".matches("[a-z&[def]]"));  //t
        System.out.println("&".matches("[a-z&[def]]"));  //t

        System.out.println("&".matches("[a-z&&[def]]"));//f
        System.out.println("d".matches("[a-z&&[def]]"));//t
        System.out.println("0".matches("[a-z&&[def]]"));  //f

        //[a-z&&][^bc]]  a-z和非bc的交集   等于[ad-z]
        System.out.println("----6----");
        System.out.println("a".matches("[a-z&&[^bc]]")); //t
        System.out.println("b".matches("[a-z&&[^bc]]")); //f
        System.out.println("0".matches("[a-z&&[^bc]]")); //f

        // [a-z&&[^m-p]] a到z和除了m到p之间的交集  等于[a-lq-z]
        System.out.println("----7----");
        System.out.println("a".matches("[a-z&&[^m-p]]"));//t
        System.out.println("m".matches("[a-z&&[^m-p]]"));//f
        System.out.println("0".matches("[a-z&&[^m-p]]"));//f





    }
}



